<!DOCTYPE HTML> <html> <head> <title>pixi.js example 11 RenderTexture</title> <style> body { margin: 0; padding: 0; background-color: #000000; } .rendererView { position: absolute; display: block; width: 100%; height: 100%; } </style> <script src="../../bin/pixi.dev.js"></script> </head> <body> <script> // create an new instance of a pixi stage var stage = new PIXI.Stage(0x000000); // create a renderer instance var renderer = new PIXI.autoDetectRenderer(800, 600); renderer.view.className = "rendererView"; // add render view to DOM document.body.appendChild(renderer.view); // OOH! SHINY! // create two render textures.. these dynamic textures will be used to draw the scene into itself var renderTexture = new PIXI.RenderTexture(800, 600); var renderTexture2 = new PIXI.RenderTexture(800, 600); var currentTexture = renderTexture; // create a new sprite that uses the render texture we created above var outputSprite = new PIXI.Sprite(currentTexture); // align the sprite outputSprite.position.x = 800 / 2; outputSprite.position.y = 600 / 2; outputSprite.anchor.x = 0.5; outputSprite.anchor.y = 0.5; // add to stage stage.addChild(outputSprite); var stuffContainer = new PIXI.DisplayObjectContainer(); stuffContainer.position.x = 800 / 2; stuffContainer.position.y = 600 / 2 stage.addChild(stuffContainer); // create an array of image ids.. var fruits = ["spinObj_01.png", "spinObj_02.png", "spinObj_03.png", "spinObj_04.png", "spinObj_05.png", "spinObj_06.png", "spinObj_07.png", "spinObj_08.png"]; // create an array of items var items = []; // now create some items and randomly position them in the stuff container for (var i=0; i < 20; i++) { var item = PIXI.Sprite.fromImage(fruits[i % fruits.length]); item.position.x = Math.random() * 400 - 200; item.position.y = Math.random() * 400 - 200; item.anchor.x = 0.5; item.anchor.y = 0.5; stuffContainer.addChild(item); items.push(item); }; // used for spinning! var count = 0; requestAnimFrame(animate); function animate() { requestAnimFrame( animate ); for (var i = 0; i < items.length; i++) { // rotate each item var item = items[i]; item.rotation += 0.1; }; count += 0.01; // swap the buffers ... var temp = renderTexture; renderTexture = renderTexture2; renderTexture2 = temp; // set the new texture outputSprite.setTexture(renderTexture); // twist this up! stuffContainer.rotation -= 0.01 outputSprite.scale.x = outputSprite.scale.y = 1 + Math.sin(count) * 0.2; // render the stage to the texture // the "true" clears the texture before the content is rendered renderTexture2.render(stage, null, true); // and finally render the stage renderer.render(stage); } </script> </body> </html>